The present invention relates to channel modulation codes and methods for implementation in magnetic recording systems such as disk drives. More specifically, the present invention relates to high rate run-length limited (RLL) modulation codes for use in a PRML channel.
Modulation codes are used in magnetic recording channels in order to limit recorded bit sequences to those that are most reliably detectable. In particular, run length limited (RLL) modulation codes have been used within partial response signaling, maximum likelihood (PRML) data recording and playback channels, decision feedback equalization (DFE) channels, and the like. Partial response systems of interest for magnetic data storage devices such as disk drives and magnetic tape include a PR4 (1xe2x88x92D2) channel and EPR4 (1+Dxe2x88x92D2xe2x88x92D3) channel as well as other nonclassical polynomials. The present invention can be used in any PR channel.
In general, magnetic recording systems employ Viterbi detectors to achieve maximum likelihood detection of user data as it is played back from the recording medium. A modulation code for a PRML data recording and playback channel is selected to balance code efficiency against timing/gain loop reliability and the Viterbi detector path memory, as well as error propagation during decoding.
Run length limited modulation codes are often described using the format xe2x80x9c(rate) RLL (d,G/I)xe2x80x9d, where the xe2x80x9cratexe2x80x9d is expressed as a ratio of the number of input bits to be encoded to the number of output bits in the resulting codeword. For example, a rate 8/9 modulation code converts an 8-bit input byte into a 9-but codeword. Rate 8/9 encoding is well known in the art, as described, for example, in U.S. Pat. No. 4,797,681 and U.S. Pat. No. 5,260,703. Rate 8/9 encoding for PRML data channel also is described in U.S. Pat. No. 5,196,849. As the code rate approaches unity, the code is deemed to be more efficient, in that relatively fewer code characters are required to encode user data values. Thus, rate 8/9 code is more efficient than a rate 2/3 code.
Similarly, rate 16/17 code is more efficient than a rate 8/9 code. A rate 16/17 code (=0.941) achieves an approximately 6% increase in recording density over a standard rate 8/9 modulation code. One example of a rate 16/17 modulation code is described in commonly assigned U.S. Pat. No. 5,635,933 incorporated herein by this reference. Another rate 16/17 code is described in U.S. Pat. No. 5,784,010 assigned to IBM.
Early PRML read channel used the well-known rate 8/9 RLL(0,4/4) channel code. In accordance with prior art, this channel code is combined with a 1/(1⊕D2) modulo 2 precoder to obtain the {+1,xe2x88x921} valued magnetic write-current pattern. On the decoder side, the signal is first equalized to the partial response target and then the +1/xe2x88x921 write-current waveform is maximum-likelihood detected. The write current is then xe2x80x9cunprecodedxe2x80x9d (or postcoded) with a 1⊕D2 modulo 2 function. This xe2x80x9cundoesxe2x80x9d the precoding to generate a {0,1} valued sequence. The data is then RLL decoded for the user. Examples of RLL encoders and decoders are disclosed in the patent identified above.
The rate 8/9 code can be extended to a rate 16/17 code by either bit-wise or byte-wise interleaving unencoded bytes with the encoded sequence. While the G and I constraints will become considerably larger (G=12, I=8 for byte-wise interleaved case), the roughly 6% in increases code rate is often considered worthwhile. Still, the need remains for improvements in recording channel encoding efficiency in order to improve storage capacities in recording systems and lower costs. The codes in this patent application are (0,k) codes. The k constraint is equivalent to the G constraint. The 0 means that consecutive ones are allowed, i.e. there is no restriction on the minimum run length of zeros.
Another limitation of prior art is that virtually all known channel coding schemes are based on 8-bit ECC symbols, as they are historically the de facto standard. We anticipate use of a 10-bit ECC symbol and thus new methods are required to achieve improved density and error propagation performance in the context of 10-bit ECC symbols.
In view of the foregoing background, a general object of the present invention is to improve the effective areal density of data recorded on magnetic media.
Another object is to improve recording efficiency by reducing the relative number of non-data bits or xe2x80x9coverheadxe2x80x9d in the data encoding process.
An object of the invention is to provide very high rate modulation codes having reasonable zero run length limitations for use in magnetic recording and playback systems.
A further object of the invention is to minimize implementation complexity in the context of high rate RLL codes, by providing a relatively small subcode.
A further object of the invention is to enable effective RLL encoding of 10-bit symbols for magnetic recording.
A more specific object of the invention is to provide a 50/51 modulation code which limits error propagation in the context of 10-bit ECC symbols.
A further object of the present invention is to provide encoding schemes having improved ratios of data bits to code word length without degrading run length limiting in encoded data.
Another object of the invention is to record data on a magnetic media so as to prevent long strings of no transition on the magnetic media thereby allowing for reliable timing and gain recovery.
According to one aspect of the invention, methodologies and constraints are disclosed to enable the creation of a variety of high rate channel codes primarily for use in a PRML channel of a magnetic recording and playback system. The new method of designing and implementing a desired code generally includes the following steps:
First, for a desired rate code, selecting a suitable base code (or xe2x80x9csubcodexe2x80x9d), having a rate n/(n+1) where n is a multiple of the ECC symbols size. Examples are rate 10/11, 20/21, 30/31 etc. for a 10-bit ECC symbols size.
Second, encoding one or more of the ECC symbols using the selected base code. Specifically, the number of ECC symbols to be encoded is the number of symbols necessary to provide the number of input bits appropriate to the selected base code. For example, a rate 10/11 base code will require encoding one 10-bit ECC symbol, while a rate 30/31 base code will require encoding three ECC symbols (to enable 30 input bits).
Third, partitioning the codeword produced by the base code into a plurality of m nibbles. In one version m is the number of unencoded ECC symbols. For example, if a rate 50/51 RLL code is desired, the base code rate 10/11 is selected, and one ECC symbol is encoded to form the 11-bit subcode word. That subcode word is partitioned into m=4 nibbles. Four ECC symbols remain unencoded. In one embodiment, three nibbles have three bits each, while a fourth nibble has two bits. However, other partitions are possible as described later.
The fourth step, which is optional but preferred, entails modifying the subcode nibbles in response to the values of corresponding unencoded symbols that will be positioned adjacent to the xi nibbles in the target codeword. Specifically, the invention forbids all zeros in a subcode nibble if the immediately preceding bit (i.e. the last bit of the preceding unencoded symbol) is zero. Conversely, we forbid all ones in a subcode nibble if the immediately preceding bit (i.e. the last bit of the preceding unencoded symbol) is a one. These constraints ensure that at least one magnetic flux transition per nibble.
Finally, the resulting modified nibbles are interleaved among the unencoded ECC symbols. The order of the unencoded symbols and the order of the subcode nibbles interleaved among them is not limited to any specific predetermined sequence. The resulting codeword can begin with either an unencoded ECC symbol. or a subcode nibble.
In one embodiment of the present invention, before interleaving the nibbles, at least one unencoded symbol is partitioned into smaller portions, such that the nibbles are then interleaved among said smaller portions of the unencoded symbol. In another embodiment, the nibbles are interleaved such that there are two or more unencoded symbols between at least one pair of nibbles.
The foregoing techniques can be applied to design rate 20/21, 30/31, 40/41, 50/51, 80/81, 90/91,1 10/111 and other similar rate codes for encoding 10-bit symbols. For each code, many different arrangements of the unencoded symbols and encoded nibbles can be used. FIG. 3 shows just one example for each code. The size and arrangements of the nibbles, however, has implications for the maximum length of uninterrupted strings of ones and zeros in the resulting codeword, as further explained later. In general, the nibbles will be similar to one another in length, if not uniform. This arises from, first, designing the base code so as to provide an adequate number of codewords. Second, the base code table is designed so as to be easy to implement. These design criteria will tend to result in codes that have good run length properties and result in nibbles that have about the same size. FIG. 3 shows some examples.
Thus in one preferred embodiment, in a rate 50/51 code, the base code has rate 10/11, the number of the unencoded ECC symbols is m=4, and the length 11 word produced by the base code encoder is divided into 4 nibbles of lengths 3, 3, 3, and 2. The resulting codeword consists of four unencoded ECC symbols interleaved with the nibbles mentioned above. The codeword arrangement is shown in FIG. 3C. This just a simple example; there are various ways of mapping the input bits to the codewords within the scope of the present invention. Further illustrations are given later.
The described techniques provide simplicity of implementation along with enviable recording density and error propagation performance. The codes described also allow use of a simple precoder 1/1⊕D to limit the length of the Nyquist sequence ( . . . 01010101 . . . ) where ⊕ denotes modulo-2 addition.
The run length constraint k can be reduced by imposing additional constraints on the base codeword nibbles. For example, additional patterns (besides the all ones and zeros patterns) can be excluded. And, as noted above, the nibble lengths can be xe2x80x9csmoothedxe2x80x9d (i.e. variation minimized) to reduce k as well.
The present invention is quite different from other modulation coding schemes. For example, in the rate 24/25 code described in U.S. Pat. No. 5,757,294, one input symbol or byte is encoded, and the resulting codeword is partitioned and interleaved among the unencoded bytes. There, the encoded byte (rate 8/9 base code) was produced by a fixed encoding, i.e. without regard to the unencoded bytes. By contrast, according to the present invention, the nibbles first produced by the base code encoding are then subjected to modifications (xixe2x86x92yi), the fourth step above, depending upon the adjacent unencoded byte (the adjacent bit). Another example of the prior art is the ""933 patent, directed to a rate 16/17 encoding scheme that again depends solely on the 16-bit (2 byte) input word, without regard to neighboring (unencoded) data. By considering the states of adjacent unencoded bits, the present invention achieves high code rates and improved performance.
Another aspect of the invention is high rate run length limited code designed in accordance with the foregoing principles.
The foregoing and other objects, features and advantages of the invention will become more readily apparent from the following detailed description of a preferred embodiment of the invention which proceeds with reference to the accompanying drawings.